#ifndef BODYPART_HH_
# define BODYPART_HH_

# 	include "common/stl.h"

#	include "common/Object.hh"
#   include "common/enum/e_bodyPart.h"
# 	include "items/Item.hh"
# 	include "items/clothes/Cloth.hh"

// affectations: reload speed, accuracy, vision, ...


// cd add jaws, tails to manage animals, ...
// throat, ears... (increase damages accuracy, loosing motion control)


class BodyPart: public Object
{
public:
    /** fill in _soundStatus Vector
     ** calls by daughter classes
     ** calls on language modification
     */
    // we could also return an int
    // should be in a thread
    // (allowing sending other requests to the server to initialize something else)
    void buildSoundCollection();

    float getHealth();

    Cloth getCloth();

protected:
  // useless ? (#define HEAD id)...
  // unsigned char _id; /// used 4 client <-> server dialog


  float _bleed; /// in cc per seconds

  float _woundAffectationCoeff; /// how important is the wound
  float _bleedCoeff; /// how much does it bleed

  /** Difference between _woundAffectationCoeff && _bleedCoeff:
   ** _bleedCoeff is how much does the wound bleed
   ** _woundAffectationCoeff is wound importance dependent
   ** for example a bleeding arm will spread more blood than head
   ** but it's (generally) a less important wound
   // usefull ?
   */

  // percentage ?
  float _health; /// more or less how much blood there's in it
  Cloth _cloth;

  /** list of available sounds played on hit
   ** for example, 'My left arm is bleeding'
   */
  std::list<Sound> _soundStatus;

  std::string _name; /// useful to build sound collection
};

#endif /* !BODYPART_HH_ */
